展示首页商品广告

1. 分析首页商品广告数据结构

结论:

  • 首页商品广告数据由广告分类和广告内容组成。
  • 广告分类带有标识符key,可以利用它确定广告展示的位置。
  • 确定广告展示的位置后,再查询和渲染出该位置的广告内容。
  • 广告的内容还有内部的排序字段,决定了广告内容的展示顺序。

2. 查询首页商品广告

class IndexView(View):
    """首页广告"""

    def get(self, request):
        """提供首页广告界面"""
        # 查询商品频道和分类
        ......

        # 广告数据
        contents = {}
        content_categories = ContentCategory.objects.all()
        for cat in content_categories:
            contents[cat.key] = cat.content_set.filter(status=True).order_by('sequence')

        # 渲染模板的上下文
        context = {
            'categories': categories,
            'contents': contents,
        }
        return render(request, 'index.html', context)

3. 渲染首页商品广告

1.轮播图广告

<ul class="slide">
    {% for content in contents.index_lbt %}
    <li><a href="{{ content.url }}"><img src="{{ content.image }}" alt="{{ content.title }}">a>li>
    {% endfor %}
ul>

2.快讯和页头广告

<div class="news">
    <div class="news_title">
        <h3>快讯h3>
        <a href="#">更多 >a>
    div>
    <ul class="news_list">
        {% for content in contents.index_kx %}
        <li><a href="{{ content.url }}">{{ content.title }}a>li>
        {% endfor %}
    ul>
    {% for content in contents.index_ytgg %}
    <a href="{{ content.url }}" class="advs"><img src="{{ content.image }}">a>
    {% endfor %}
div>

3.楼层广告(一楼)

<div class="list_model">
    <div class="list_title clearfix">
        <h3 class="fl" id="model01">1F 手机通讯h3>
        <div class="subtitle fr">
            <a @mouseenter="f1_tab=1" :class="f1_tab===1?'active':''">时尚新品a>
            <a @mouseenter="f1_tab=2" :class="f1_tab===2?'active':''">畅想低价a>
            <a @mouseenter="f1_tab=3" :class="f1_tab===3?'active':''">手机配件a>
        div>
    div>
    <div class="goods_con clearfix">
        <div class="goods_banner fl">
            <img src="{{ contents.index_1f_logo.0.image}}">
            <div class="channel">
                {% for content in contents.index_1f_pd %}
                <a href="{{ content.url }}">{{ content.title }}a>
                {% endfor %}
            div>
            <div class="key_words">
                {% for content in contents.index_1f_bq %}
                <a href="{{ content.url }}">{{ content.title }}a>
                {% endfor %}
            div>

        div>
        <div class="goods_list_con">
            <ul v-show="f1_tab===1" class="goods_list fl">
                {% for content in contents.index_1f_ssxp %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
            <ul v-show="f1_tab===2" class="goods_list fl">
                {% for content in contents.index_1f_cxdj %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
            <ul v-show="f1_tab===3" class="goods_list fl">
                {% for content in contents.index_1f_sjpj %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
        div>
    div>
div>

4.楼层广告(二楼)

<div class="list_model model02">
    <div class="list_title clearfix">
        <h3 class="fl" id="model01">2F 电脑数码h3>
        <div class="subtitle fr">
            <a @mouseenter="f2_tab=1" :class="f2_tab===1?'active':''">加价换购a>
            <a @mouseenter="f2_tab=2" :class="f2_tab===2?'active':''">畅享低价a>
        div>
    div>
    <div class="goods_con clearfix">
        <div class="goods_banner fl">
            <img src="{{ contents.index_2f_logo.0.image}}">
            <div class="channel">
                {% for content in contents.index_2f_pd %}
                <a href="{{ content.url }}">{{ content.title }}a>
                {% endfor %}
            div>
            <div class="key_words">
                {% for content in contents.index_2f_bq %}
                <a href="{{ content.url }}">{{ content.title }}a>
                {% endfor %}
            div>
        div>
        <div class="goods_list_con">
            <ul v-show="f2_tab===1" class="goods_list fl">
                {% for content in contents.index_2f_cxdj %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
            <ul v-show="f2_tab===2" class="goods_list fl">
                {% for content in contents.index_2f_jjhg %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
        div>
    div>
div>

5.楼层广告(三楼)

<div class="list_model model03">
    <div class="list_title clearfix">
        <h3 class="fl" id="model01">3F 家居家装h3>
        <div class="subtitle fr">
            <a @mouseenter="f3_tab=1" :class="f3_tab===1?'active':''">生活用品a>
            <a @mouseenter="f3_tab=2" :class="f3_tab===2?'active':''">厨房用品a>
        div>
    div>
    <div class="goods_con clearfix">
        <div class="goods_banner fl">
            <img src="{{ contents.index_3f_logo.0.image }}">
            <div class="channel">
                {% for content in contents.index_3f_pd %}
                <a href="{{ content.url }}">{{ content.title }}a>
                {% endfor %}
            div>
            <div class="key_words">
                {% for content in contents.index_3f_bq %}
                <a href="{{ content.url }}">{{ content.title }}a>
                {% endfor %}
            div>
        div>
        <div class="goods_list_con">
            <ul v-show="f3_tab===1" class="goods_list fl">
                {% for content in contents.index_3f_shyp %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
            <ul v-show="f3_tab===2" class="goods_list fl">
                {% for content in contents.index_3f_cfyp %}
                <li>
                    <a href="{{ content.url }}" class="goods_pic"><img src="{{ content.image }}">a>
                    <h4><a href="{{ content.url }}" title="{{ content.title }}">{{ content.title }}a>h4>
                    <div class="price">{{ content.text }}div>
                li>
                {% endfor %}
            ul>
        div>
    div>
div>